package br.com.toscano.contpedido.business;

import java.util.List;

import br.com.toscano.contpedido.domain.Funcionalidade;
import br.com.toscano.contpedido.persistence.FuncionalidadeDAO;
import br.gov.frameworkdemoiselle.lifecycle.Startup;
import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.template.DelegateCrud;
import br.gov.frameworkdemoiselle.transaction.Transactional;

@BusinessController
public class FuncionalidadeBC extends DelegateCrud<Funcionalidade, Long, FuncionalidadeDAO> {
	
	private static final long serialVersionUID = 1L;

	
	@Startup
	@Transactional
	public void load() {
		if (findAll().isEmpty()) {

			insert(new Funcionalidade("01","cliente_edit.jsf","Cadastrar Cliente"));
			insert(new Funcionalidade("02","cliente_list.jsf","Listar Cliente"));
			insert(new Funcionalidade("03","formaRecebimento_edit.jsf","Cadastrar Forma de Recebimento"));
			insert(new Funcionalidade("04","formaRecebimento_list.jsf","Listar Forma de Recebimento"));
			insert(new Funcionalidade("06","pedido_edit.jsf","Cadastrar Pedido"));
			insert(new Funcionalidade("08","pedido_list.jsf","Listar Pedido"));
			insert(new Funcionalidade("09","pedido_relatorio_consolidado.jsf","Relatorio Consolidado"));
			insert(new Funcionalidade("10","produto_edit.jsf","Cadastrar Produto"));
			insert(new Funcionalidade("11","produto_list.jsf","Listar Produto"));
			insert(new Funcionalidade("12","recebimento_edit.jsf","Cadastrar Recebimento"));
			insert(new Funcionalidade("13","recebimento_list.jsf","Lisgtar Recebimento"));
			insert(new Funcionalidade("14","unidadeMedida_edit.jsf","Cadastrar Unidade de Medida"));
			insert(new Funcionalidade("15","unidadeMedida_list.jsf","Listar Unidade de Medida"));

			insert(new Funcionalidade("16","usuario_edit.jsf","Cadastrar Usuario"));
			insert(new Funcionalidade("17","usuario_list.jsf","Listar Usuario"));
			insert(new Funcionalidade("18","recebimento_conferir.jsf","Conferir Recebimento"));
			insert(new Funcionalidade("19","cliente_extrato.jsf","Extrato do Cliente"));
		}
		
		if (!this.getDelegate().existeFuncionalidade("20")) {
			insert(new Funcionalidade("20","produto_historico_uso.jsf","Histórico de Uso"));
		}
		if (!this.getDelegate().existeFuncionalidade("21")) {
			insert(new Funcionalidade("21","pedido_agendar.jsf","Agendar Produção"));
		}
		if (!this.getDelegate().existeFuncionalidade("22")) {
			insert(new Funcionalidade("22","cliente_edit.jsf","Editar Desconto"));
		}
		if (!this.getDelegate().existeFuncionalidade("23")) {
			insert(new Funcionalidade("23","localProducao_edit.jsf","Cadastrar Local de Produção "));
		}
		if (!this.getDelegate().existeFuncionalidade("24")) {
			insert(new Funcionalidade("24","localProducao_list.jsf","Listar Local de Produção"));
		}
		if (!this.getDelegate().existeFuncionalidade("25")) {
			insert(new Funcionalidade("25","pedido_listar_local_producao.jsf","Visualizar Produçãos"));
		}
		if (!this.getDelegate().existeFuncionalidade("26")) {
			insert(new Funcionalidade("26","usuario_vendedor_list.jsf","Rank dos Vendedores"));
		}
		if (!this.getDelegate().existeFuncionalidade("27")) {
			insert(new Funcionalidade("27","cliente_extrato_relatorio.jsf","Extrato dos Clientes"));
		}
		if (!this.getDelegate().existeFuncionalidade("28")) {
			insert(new Funcionalidade("28","cliente_importar_planilha.jsf","Importar Cliente"));
		}
		if (!this.getDelegate().existeFuncionalidade("29")) {
			insert(new Funcionalidade("29","produto_importar_planilha.jsf","Importar Produto"));
		}
		if (!this.getDelegate().existeFuncionalidade("30")) {
			insert(new Funcionalidade("30","pedido_cancelamento.jsf","Cancelar Pedido"));
		}

	}

	public Funcionalidade getFuncionalidadeCodigo(String codigo) {
		return this.getDelegate().getFuncionalidadeCodigo(codigo);
	}

	@Override
	@Transactional
	public void delete(Long id) {
		this.getDelegate().delete(id);
	}

	@Override
	@Transactional
	public void delete(List<Long> ids) {
		// TODO Auto-generated method stub
		for (Long id : ids) {
			this.delete(id);
		}
	}

}
